import numpy as np
# 预定义的固定层矩阵
sf = np.zeros((9, 3, 6), dtype=np.uint8)
for i in range(9):
    if i < 6:  # from 0：六爻=0，五爻=1，
        for j in range(3):
            sf[i][j][i] = 1
    elif i < 8:  # from 6：外卦=1，内卦=1
        for j in range(3):
            for k in range(3):
                sf[i][j][i // 7 * 3 + k] = 1
    else:  # 8：主卦=1
        for k in range(6):
            sf[i][0][k] = 1

_mapping = {
        # 固定层（1-9层）
        '六爻': 0, '上爻': 0,
        '五爻': 1,
        '四爻': 2,
        '三爻': 3,
        '二爻': 4,
        '初爻': 5, '一爻': 5,
        '外卦': 6,
        '内卦': 7,
        '主卦': 8,

        # 动态层（10-31层）
        '阳': 9,
        '阴': 10,
        '安静': 11,
        '发动': 12,
        '变卦': 13,
        '伏藏': 14,
        # 五行 from 15
        '金': 15, '水': 16, '木': 17, '火': 18, '土': 19,
        # 地支 from 20
        '亥': 20, '子': 21, '丑': 22,
        '寅': 23, '卯': 24, '辰': 25,
        '巳': 26, '午': 27, '未': 28,
        '申': 29, '酉': 30, '戌': 31,

        # 选中动爻及其变爻
        '动': 32,
        '回头扶': 33,
        '回头生': 34,
        '回头克': 35,
        '回头耗': 36,
        '回头泄': 37,
        '动爻扶': 38,
        '动爻生': 39,
        '动爻克': 40,
        '动爻耗': 41,
        '动爻泄': 42,

        # '世爻': 33,
        # '应爻': 33,
        # '间爻': 33,
        # '其他': 33,
    }        # 名称到索引的映射关系
for i in range(12):
    index = 43+i
    _mapping['化差'+str(i)]=index
    _mapping['化和'+str(i)]=index+12
    _mapping['变差'+str(i)]=index+24 # 58
    _mapping['变和'+str(i)]=index+36

print( _mapping)